import {MenuTypeEnum} from "../enums/menu-type-enum.ts"
import {MenuIconTypeEnum} from "../enums/menu-icon-type-enum.ts"
import {MenuObjPropNameEnum} from '../enums/menu-obj-prop-name-enum.ts'

/**
 * 菜单类型
 */
export interface MenuType {
  [MenuObjPropNameEnum.ID]?: number;
  [MenuObjPropNameEnum.PARENT_ID]: number | null;
  [MenuObjPropNameEnum.TYPE]: MenuTypeEnum;
  [MenuObjPropNameEnum.NAME]: string;
  [MenuObjPropNameEnum.PAGE_PATH]: string | null;
  [MenuObjPropNameEnum.ROUTE_NAME]: string | null;
  [MenuObjPropNameEnum.ROUTE_PATH]: string | null;
  [MenuObjPropNameEnum.ROUTE_QUERY]: string | null;
  [MenuObjPropNameEnum.LINK_PATH]: string | null;
  [MenuObjPropNameEnum.SORT]: number;
  [MenuObjPropNameEnum.ICON_TYPE]: MenuIconTypeEnum | null;
  [MenuObjPropNameEnum.ICON]: string | null;
  [MenuObjPropNameEnum.DISABLED]: boolean;
  [MenuObjPropNameEnum.HIDDEN]: boolean;
  [MenuObjPropNameEnum.CACHED]: boolean;
  [MenuObjPropNameEnum.LABELED]: boolean;
  [MenuObjPropNameEnum.LABEL_SORT]: number;
  [MenuObjPropNameEnum.CHILDREN]?: MenuType[];
}
